package com.viphuli.util;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.telephony.TelephonyManager;
import android.util.DisplayMetrics;

import com.offroader.utils.LogUtils;
import com.offroader.utils.StringUtils;

public class PhoneUtils {
	
	public static String getChannel(Context ctx) {

		try {
			ApplicationInfo info = ctx.getPackageManager().getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);
			String channel = info.metaData.getString("UMENG_CHANNEL");

			return channel;

		} catch (Exception e) {
			LogUtils.error(e.getMessage(), e);
		}

		return null;
	}
	
	/**
	 * 获取手机型号
	 * 
	 * @return
	 */
	public static String getPhoneModel() {
		try {
			return URLEncoder.encode(android.os.Build.MODEL, "utf-8");
		} catch (UnsupportedEncodingException e) {
			LogUtils.error(e.getMessage(), e);
		}

		return null;
	}
	
	/**
	 * 获取手机机器码
	 * 
	 * IMEI国际移动 设备 身份码
	 * 
	 * @param act
	 * @return
	 */
	public static String getPhoneImei(Context ctx) {
		String imei = null;

		try {
			TelephonyManager telMan = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE);

			if (telMan != null && StringUtils.isBlank(imei)) {// 优先获得得到imei（所有的设备都可以返回）

				imei = telMan.getDeviceId();

			}

			if (telMan != null && StringUtils.isBlank(imei)) {// imei获得失败，获得sim（所有的GSM设备可以返回，CDMA返回空）

				imei = telMan.getSimSerialNumber();

			}

			if (telMan != null && StringUtils.isBlank(imei)) {// 以前失败，根据一定策略生成15位imei

				StringBuilder sb = new StringBuilder();
				sb.append("XS");
				sb.append(Build.BOARD.length() % 10);// 1
				sb.append(Build.BRAND.length() % 10);// 2
				sb.append(Build.CPU_ABI.length() % 10);// 3
				sb.append(Build.DEVICE.length() % 10);// 4
				sb.append(Build.DISPLAY.length() % 10);// 5
				sb.append(Build.HOST.length() % 10);// 6
				sb.append(Build.ID.length() % 10);// 7
				sb.append(Build.MANUFACTURER.length() % 10);// 8
				sb.append(Build.MODEL.length() % 10);// 9
				sb.append(Build.PRODUCT.length() % 10);// 10
				sb.append(Build.TAGS.length() % 10);// 11
				sb.append(Build.TYPE.length() % 10);// 12
				sb.append(Build.USER.length() % 10);// 13

				imei = sb.toString();
			}

			if (StringUtils.isBlank(imei)) {// 如果还是获得失败时返回固定值（基本不可能）

				imei = "";

			}

			return imei;

		} catch (Throwable e) {
			LogUtils.error(e.getMessage(), e);
		}

		return "";// 出现异常时返回固定imei

	}
	
	/**
	 * 获取屏幕大小
	 * 
	 * @param act
	 * @return
	 */
	public static int[] getScreenPix(Context ctx) {
		DisplayMetrics dm = ctx.getResources().getDisplayMetrics();
		int[] pixs = { dm.widthPixels, dm.heightPixels };

		return pixs;
	}

	/**
	 * 系统应用版本号
	 * 
	 * @return
	 */
	public static int getSystemVersionCode() {
		int version = 0;
		try {
			version = android.os.Build.VERSION.SDK_INT;
		} catch (NumberFormatException e) {
			LogUtils.error(e.getMessage(), e);
		}
		return version;
	}
	
}
